package com.saa.user.controller;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.saa.common.redis.service.RedisService;
import com.saa.common.vo.OmsResultVo;
import com.saa.user.service.SaaUserService;
import com.saa.user.vo.SaaStaffVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/saa/user")
public class SaaUserController {
    private Logger logger = LoggerFactory.getLogger(SaaUserController.class);
    @Autowired
    private SaaUserService saaUserService;
    @Autowired
    private RedisService redisService;

   /****根据机构、员工姓名、岗位、状态、入职时间分页查询权限列表***/
   @RequestMapping(value="/getUserListPage")
   public OmsResultVo getUserListPage(@RequestBody SaaStaffVo saaStaffVo){
        return saaUserService.getUserListPage(saaStaffVo);
   }

    /****根据应用查询权限列表***/

   /****根据人员ID获取人员详情***/
   @RequestMapping(value="/getUserInfo")
   public OmsResultVo getUserInfo(@RequestBody SaaStaffVo saaStaffVo){
       return saaUserService.getUserInfo(saaStaffVo);
   }

   /****根据人员ID获取数据权限***/
   @RequestMapping(value="/getUserDict")
   public OmsResultVo getUserDict(@RequestBody SaaStaffVo saaStaffVo){
       return OmsResultVo.builder(200, "查询成功", saaUserService.getUserDict(saaStaffVo));
   }

    /****根据人员ID获取人员角色列表***/
    @RequestMapping(value="/getUserRole")
    public OmsResultVo getUserRole(@RequestBody SaaStaffVo saaStaffVo){
        return OmsResultVo.builder(200, "查询成功", saaUserService.getUserRole(saaStaffVo));
    }

    /****数据权限授权***/
    @PostMapping(value="/saveUserInformation")
    public OmsResultVo saveUserInformation(@RequestBody SaaStaffVo saaStaffVo){
        OmsResultVo omsResultVo = saaUserService.saveUserInformation(saaStaffVo);
        SaaStaffVo staffVo = this.saaUserService.getUserRoleAndInformation(saaStaffVo);
        String redis_value = JSON.toJSONString(staffVo);
        redisService.set(saaStaffVo.getUserCode(),redis_value);
        return omsResultVo;
    }

    /****角色授权***/
    @RequestMapping(value="/saveUserRole")
    public OmsResultVo saveUserRole(@RequestBody SaaStaffVo saaStaffVo){
        OmsResultVo omsResultVo = saaUserService.saveUserRole(saaStaffVo);
        SaaStaffVo staffVo = this.saaUserService.getUserRoleAndInformation(saaStaffVo);
        String redis_value = JSON.toJSONString(staffVo);
        redisService.set(saaStaffVo.getUserCode(),redis_value);
        return omsResultVo;
    }


    /****根据人员ID获取人员权限列表***/

}
